1. Field of the Invention
This invention relates to the field of computer system upgrades. More particularly, the present invention relates to a robust remote memory upgrade system and method.
2. Related Art
Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment. Frequently, computer systems that provide information processing are needed to realize these advantageous results. Computer systems typically process information in accordance with a set of instructions beginning with boot instructions associated with initial configuration of a computer system. System startup routines, such as a boot process, typically initialize various settings within the computer system. As systems advance and applications become more complex there is usually a need for updating information in the system. However, providing updated information such as boot data is often very complex and traditionally susceptible to errors.
It is very important for boot up routines to be performed correctly and accurately. One of the fundamental desirable characteristics of a computer system is to provide reliable and predictable results. Reliability usually depends upon accurate initialization of the system. Most devices that include processors (such as computer systems, switches, routers, hubs, network adapters, gateways, etc.) that perform operations in accordance with a defined series of instructions require the system to start at a predetermined state or configuration. If the system does not start out with the correct setup information the processes will not start at an anticipated state and typically be misaligned for the remainder of the operations. Inappropriate or erroneous start up information usually produces unreliable and/or incomprehensible results and often causes system crashes. An accurate initialization establishes settings to ensure that processes commence from a predetermined known state. During a computer system power up, the processor typically starts executing instructions from a specific location in a read only memory (ROM) that includes boot instructions. This memory area (e.g., in a flash ROM) and its associated instructions is usually referred to as the boot loader. The boot loader performs a power on self-test (POST) on the system and loads the operating system (OS or firmware) stored in the flash.
Updating firmware information such as boot instructions is typically susceptible to a variety of difficulties. In particular there are a variety of interruptions to the update that often result in the occurrence of an inconsistent state being entered during a boot process. There are a variety of interruptions such as a power loss, communication loss, or other disruptions to the upgrade that result in error conditions in the update of firmware or boot information. For example, if only a portion of an update is loaded and another portion is not it typically results in an inconsistent state in the boot routine and the device usually has to be sent to the manufacturer for servicing to correct the problem.
Traditional attempts at updating the boot information or operating system (OS) firmware residing in a ROM (e.g., a flash ROM) typically lack desirable levels of robustness. For example, traditional approaches running over the firmware (in a product) attempt to obtain an updated flash image and program this image on the target device. However, these traditional approaches do not typically handle error conditions such as power loss, unplugging of power by the user, or other disruptions to the upgrade process that make the product unbootable and often completely disabled. Users typically have to send the target device product back to the factory to replace the flash ROM component. In addition, the traditional update attempts typically consume significant amounts of valuable RAM space.
Local update techniques are another way of traditionally attempting to update boot information. Local update techniques usually involved locally connecting a target device (e.g., computer system) to a second computer system using a serial cable/terminal and upgrading the ROM using a terminal application running on the second computer system. This approach does not provide the advantages of remote upgrading capabilities and does not typically provide enough robustness to handle boot upgrade interruptions. Local upgrade techniques typically require resources to be transported to multiple locations and are more susceptible to maintenance problems.
Thus, what is required is a solution that provides a reliable and robust boot upgrade system and method.